package main

import "go.uber.org/zap"

// dev 函数演示开发环境日志记录器的使用
// 开发环境日志器提供彩色输出和更详细的信息，适合调试阶段使用
func dev() {
	// 创建开发环境日志记录器
	// NewDevelopment() 返回适合开发环境的配置，包含彩色输出和详细堆栈信息
	logger, _ := zap.NewDevelopment()
	// defer logger.Sync() // 程序退出前刷新日志缓冲区（注释掉避免影响演示）

	// 不同级别的日志输出演示
	logger.Debug("调试信息")          // Debug级别：用于开发调试的详细信息
	logger.Info("普通信息")           // Info级别：常规操作信息
	logger.Warn("警告信息")           // Warn级别：需要注意但不影响程序运行的警告
	logger.Error("错误信息")          // Error级别：错误信息，程序仍可继续运行
	logger.Panic("严重错误，会触发panic") // Panic级别：记录后触发panic，程序崩溃
	logger.Fatal("致命错误，程序退出")     // Fatal级别：记录后立即退出程序
}

// example 函数演示示例日志记录器的使用
// 示例日志器主要用于测试和文档示例，输出格式简洁
func example() {
	// 创建示例日志记录器（用于测试和文档示例）
	// NewExample() 创建适合示例代码的日志器，输出格式简洁
	logger := zap.NewExample()

	// 不同级别的日志输出演示
	logger.Debug("this is example debug log") // 调试信息
	logger.Info("this is example info log")   // 普通信息
	logger.Warn("this is example warn log")   // 警告信息
	logger.Error("this is example error log") // 错误信息
	logger.Panic("this is example panic log") // 严重错误，触发panic
	logger.Fatal("致命错误，程序退出")                 // 致命错误，程序退出
}

// prod 函数演示生产环境日志记录器的使用
// 生产环境日志器使用JSON格式，性能优化，适合生产部署
func prod() {
	// 创建生产环境日志记录器（JSON格式，高性能）
	// NewProduction() 返回适合生产环境的配置，使用JSON格式，性能优化
	logger, _ := zap.NewProduction()
	// defer logger.Sync() // 程序退出前刷新日志（注释掉避免影响演示）

	// 记录不同级别日志
	logger.Debug("this is prod debug log") // 调试信息（生产环境通常不显示）
	logger.Info("this is prod info log")   // 普通信息
	logger.Warn("this is prod warn log")   // 警告信息
	logger.Error("this is prod error log") // 错误信息
	logger.Panic("this is prod panic log") // 严重错误，触发panic
	logger.Fatal("this is prod fatal log") // 致命错误，程序退出
}

// main 函数是程序入口点
// 通过取消注释不同的函数调用来测试不同的日志器配置
func main() {
	// dev()      // 测试开发环境日志器
	// example()  // 测试示例日志器
	prod() // 测试生产环境日志器
}
